using UnityEngine;
using System.Collections;
using System.Collections.Generic;

namespace ESCENARIOS
{
	public class Juego: MonoBehaviour  {
		//Propiedades
		Escena EscenaActual;
		List<Escena> Escenas;
		public static float MouseClickPosX;
		public static float MouseClickPosY;

		//Eventos
		 void Start()
		{
			IniciarJuego();	
		}

		//Metodos

		/// <summary>
		/// Iniciars the juego.
		/// </summary>
		public void IniciarJuego()
		{
			DefinirEstructura ();

			EscenaActual = Escenas[0];
			EscenaActual.CargarEscena(1);
		}

		/// <summary>
		/// Definirs the estructura.
		/// </summary>
		void DefinirEstructura ()
		{
			Escenas = new List<Escena>();
			Escena EscenaHotel = new Escena ();
			Pantalla HabitacionHotel = new Pantalla ();
			Pantalla PasilloHotel = new Pantalla ();
			Pantalla EntradaHotel = new Pantalla ();
			EscenaHotel.Pantallas.Add (HabitacionHotel);
			EscenaHotel.Pantallas.Add (PasilloHotel);
			EscenaHotel.Pantallas.Add (EntradaHotel);
			Escena EscenaRevuelta = new Escena ();
			Pantalla CallePuebloDia = new Pantalla ();
			Pantalla PlazaPuebloDia = new Pantalla ();
			EscenaRevuelta.Pantallas.Add (CallePuebloDia);
			EscenaRevuelta.Pantallas.Add (PlazaPuebloDia);
			Escena EscenaPueblo = new Escena ();
			Pantalla CallePuebloNoche = new Pantalla ();
			Pantalla PlazaPuebloNoche = new Pantalla ();
			EscenaPueblo.Pantallas.Add (CallePuebloNoche);
			EscenaPueblo.Pantallas.Add (PlazaPuebloNoche);
			Escena EscenaBosque = new Escena ();
			Pantalla TrochaBosque = new Pantalla ();
			Pantalla MonteBosque = new Pantalla ();
			Pantalla RioBosque = new Pantalla ();
			EscenaBosque.Pantallas.Add (TrochaBosque);
			EscenaBosque.Pantallas.Add (MonteBosque);
			EscenaBosque.Pantallas.Add (RioBosque);
			Escena EscenaCampamento = new Escena ();
			Pantalla EntradaCampamento = new Pantalla ();
			Pantalla RetroescabadorasCampamento = new Pantalla ();
			EscenaCampamento.Pantallas.Add (EntradaCampamento);
			EscenaCampamento.Pantallas.Add (RetroescabadorasCampamento);
			Escena EscenaContainers = new Escena ();
			Pantalla ExteriorContainers = new Pantalla ();
			Pantalla InteriorContainers = new Pantalla ();
			EscenaContainers.Pantallas.Add (ExteriorContainers);
			EscenaContainers.Pantallas.Add (InteriorContainers);
			Escenas.Add(EscenaHotel);
			Escenas.Add(EscenaRevuelta);
			Escenas.Add(EscenaPueblo);
			Escenas.Add(EscenaBosque);
			Escenas.Add(EscenaCampamento);
			Escenas.Add(EscenaContainers);
		}

		/// <summary>
		/// Cambiars the siguiente escena.
		/// </summary>
		/// <param name="pEscena">P escena.</param>
		public void CambiarSiguienteEscena(Escena pEscena)
		{
			EscenaActual.CargarEscena(EscenaActual.numero + 1);
		}

		/// <summary>
		/// Detectars the click.
		/// </summary>
		/// <returns><c>true</c>, if click was detectared, <c>false</c> otherwise.</returns>
		/// <param name="pMousePosX">P mouse position x.</param>
		/// <param name="pMousePosY">P mouse position y.</param>
		/// <param name="pX">P x.</param>
		/// <param name="pY">P y.</param>
		/// <param name="pAncho">P ancho.</param>
		/// <param name="pAlto">P alto.</param>
		public bool DetectarClick(float pX, float pY, float pAncho, float pAlto)
		{
			Rect rectanguloArea = new Rect(pX, pY, pAncho, pAlto);
			if(rectanguloArea.Contains(new Vector3(MouseClickPosX, MouseClickPosY)))
			   return true;
			 else
			   return false;

		}

		//Eventos

		/// <summary>
		/// Raises the level was loaded event.
		/// </summary>
		/// <param name="level">Level.</param>
		void OnLevelWasLoaded(int level)
		{
			//TODO:Como detectar en que escena esta
			EscenaActual = Escenas [level];
		}
	}
}

